package trabalhotec.gui;

import java.awt.event.*;
import java.beans.PropertyVetoException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
//import javax.swing.text.*;
import java.awt.*;
import java.util.Vector;

public class Aeroporto extends JInternalFrame {

    //JFormattedTextField Cod;
    JTextField Cod;
    JTextField Nome;
    JTextField Cidade;
    private JPanel pane;
    Vector<String> titulo = new Vector<String>();
    Vector<Vector<String>> valores;
    JRadioButton sim;
    JRadioButton nao;
    JTable tabela;
    trabalhotec.Negocios.Aeroporto aero = new trabalhotec.Negocios.Aeroporto();
    public Aeroporto() {
        this.setTitle("Aeroporto");
        titulo.add("Codigo");
        titulo.add("Nome");
        titulo.add("Cidade");
        titulo.add("Voos internacionais");
        pane = new JPanel();
        pane.setLayout(new BorderLayout());
        listarAeroporto();

        this.setClosable(true);
        this.setMaximizable(false);
        this.setIconifiable(true);
        this.setResizable(false);
        this.getContentPane().add(pane);
    }

    public void listarAeroporto() {
        pane.removeAll();
        pane.setLayout(new BorderLayout());
        valores = aero.listarAeroporto();
        tabela = new JTable(valores, titulo);
        tabela.setEnabled(true);
        JScrollPane paneTabela = new JScrollPane(tabela);
        tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JButton novo = new JButton("Novo");
        JButton excluir = new JButton("Excluir");
        JButton sair = new JButton("sair");
        JPanel botoes = new JPanel();

        botoes.add(novo);
        botoes.add(excluir);
        botoes.add(sair);
        excluir.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                int selRow = tabela.getSelectedRow();  
                if(selRow ==-1)JOptionPane.showMessageDialog(null, "Nenhuma linha selecionada");
                else{
                    String valor = (String) tabela.getModel().getValueAt(selRow, 0);
                    Object[] options = { "Sim", "Não" };  
                    int i = JOptionPane.showOptionDialog(null,"Tem certeza que deseja excluir?", "Saída", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);  
                    if (i == JOptionPane.YES_OPTION) {  
                        if(aero.excluirAeroporto(valor)){
                            JOptionPane.showMessageDialog(null, "Aeroporto apagado com sucesso");
                            listarAeroporto();
                        }else JOptionPane.showMessageDialog(null, "Aeroporto com voos cadastrados, exclua os voos para poder excluir o aeroporto");
                    }
                }
            }
        });
        sair.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                try {
                    setClosed(true);
                } catch (PropertyVetoException ex) {
                    Logger.getLogger(Aeroporto.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });


        pane.add(botoes, BorderLayout.SOUTH);
        pane.add(paneTabela, BorderLayout.CENTER);

        novo.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                cadAeroporto();
            }
        });
        this.repaint();
        this.revalidate();
    }

    public void cadAeroporto() {
        pane.removeAll();
        //this.setTitle("Teste");
        JLabel cod = new JLabel("Codigo: ");
        JLabel nome = new JLabel("Nome: ");
        JLabel cidade = new JLabel("Cidade: ");
        JLabel voosint = new JLabel("Aceita Voos internacionais: ");
        Cod = new JTextField(4);
        Cod.addKeyListener(new KeyListener() {

            public void keyTyped(KeyEvent e) {
                if (Cod.getText().length() >= 3 || !Character.isLetter(e.getKeyChar()) ) {
                    e.consume();
                }
            }

            public void keyPressed(KeyEvent e) {
            }

            public void keyReleased(KeyEvent e) {
            }
        });
        Nome = new JTextField("", 15);
        Cidade = new JTextField("", 15);
        sim = new JRadioButton("sim");
        nao = new JRadioButton("nao");
        JButton Cadastrar = new JButton("Cadastrar Aeroporto");
        JButton Limpardados = new JButton("Limpar os campos");
        Cadastrar.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                
                if(aero.cadAeroporto(Cod.getText(), Nome.getText(), Cidade.getText(), sim.isSelected())){
                    listarAeroporto();
                }
                else JOptionPane.showMessageDialog(null, "Codigo duplicado");
            }
            
        });
        Limpardados.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                Cod.setText(null);
                Nome.setText(null);
                Cidade.setText(null);
            }
        });
        JButton Sair = new JButton("Sair");
        Sair.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                try {
                    setClosed(true);
                } catch (PropertyVetoException ex) {
                    Logger.getLogger(Aeroporto.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            
        });
        ButtonGroup simnao = new ButtonGroup();
        GridBagConstraints c = new GridBagConstraints();

        pane.setLayout(new GridBagLayout());

        nao.setSelected(true);
        simnao.add(sim);
        simnao.add(nao);
        sim.setActionCommand("sim");
        nao.setActionCommand("nao");

        c.anchor = GridBagConstraints.FIRST_LINE_START;
        c.gridx = 0;
        c.gridy = 0;
        pane.add(cod, c);
        c.gridx = 0;
        c.gridy = 1;
        pane.add(nome, c);
        c.gridx = 0;
        c.gridy = 2;
        pane.add(cidade, c);
        c.gridx = 0;
        c.gridy = 3;
        pane.add(voosint, c);

        c.anchor = GridBagConstraints.FIRST_LINE_START;
        c.gridx = 1;
        c.gridy = 0;
        pane.add(Cod, c);
        c.gridx = 1;
        c.gridy = 1;
        pane.add(Nome, c);
        c.gridx = 1;
        c.gridy = 2;
        pane.add(Cidade, c);
        c.gridx = 1;
        c.gridy = 3;
        pane.add(sim, c);
        c.gridx = 1;
        c.gridy = 4;
        pane.add(nao, c);
        c.gridy = 5;
        c.anchor = GridBagConstraints.CENTER;
        c.insets = new Insets(5, 5, 5, 5);
        c.gridx = 0;
        pane.add(Cadastrar, c);
        c.gridx = 1;
        pane.add(Limpardados, c);
        c.gridx = 2;
        pane.add(Sair, c);
        //this.pack();
        this.repaint();
        this.revalidate();
    }
}
